package xyz.heyaoshare.config.websocket;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.config.annotation.EnableWebSocket;
import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;
import xyz.heyaoshare.config.websocket.chat.ChatHandshakeInterceptor;
import xyz.heyaoshare.config.websocket.chat.ChatSocketHandler;

/**
 * WebSocket配置类
 * @author YueHe
 * @version 0.0.1
 * @since 2025/6/25 下午1:32
 */
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {

    /**
     * 注册 WebSocket 处理器到指定的端点。
     * 此方法通过注册中心将自定义的 WebSocket 处理器 {@link ChatSocketHandler} 注册到 "/ws/chat" 端点，
     * 并允许来自所有来源（origins）的连接。在实际应用中，为了安全起见，应避免使用 "*"，而应明确指定允许的来源。
     *
     * @param registry WebSocket 处理器注册中心，用于注册 WebSocket 处理器及其映射的端点。
     */
    @Override
    public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
        registry.addHandler(new ChatSocketHandler(), "/ws/chat")
                .addInterceptors(new ChatHandshakeInterceptor())
                .setAllowedOrigins("*");
    }

}